// 求和相关的配置

const countOptions = {
    // 命名空间必须写成true，mapState取值的时候才可以识别，否则获取不到State里面的值
    namespaced: true,
    actions: {
        // ++1操作
        // increment: function (context, value) {
        //     console.log('此处代表的是actions里面的Increment被调用了！');
        //     context.commit('INCREMENT', value);
        // }

        // // 其中方法名:function可以触发，方法名的简写形式
        // increment(context, value) {
        //     console.log('此处代表的是 actions 里面的 increment 加法被调用了！');
        //     context.commit('INCREMENT', value);
        // },
        // decrement(context, value) {
        //     console.log('此处代表的是 actions 里面的 decrement 减法被调用了！');
        //     context.commit('DECREMENT', value);
        // },
        incrementOdd(context, value) {
            console.log('此处代表的是 actions 里面的 incrementOdd 减法被调用了！');
            // 如果有任何业务逻辑或者ajax请求的话，都需要写到action里面
            if (context.state.sum % 2 !== 0) {
                context.commit('INCREMENTODD', value);
            }
        },
        incrementWait(context, value) {
            console.log('此处代表的是 actions 里面的 incrementWait 加法被调用了！');
            setTimeout(() => {
                context.commit('INCREMENTWAIT', value);
            }, 500)
        }
    },
    mutations: {
        INCREMENT(state, value) {
            console.log('此处代表的是 mutations 里面的 INCREMENT 加法被调用了！');
            state.sum += value;
        },
        DECREMENT(state, value) {
            console.log('此处代表的是 mutations 里面的 DECREMENT 减法被调用了！');
            state.sum -= value;
        },
        INCREMENTODD(state, value) {
            console.log('此处代表的是 mutations 里面的 INCREMENTODD 减法被调用了！');
            state.sum += value;
        },
        INCREMENTWAIT(state, value) {
            console.log('此处代表的是 mutations 里面的 INCREMENTWAIT 加法被调用了！');
            state.sum += value;
        },
    },
    state: {
        sum: 0, // 当前的和
        school: '尚硅谷',
        subject: '前端',
    },
    getters: {
        bigSum(state) {
            return state.sum * 10;
        }
    }
}

// 默认暴露
export default countOptions;


